package com.csun.cmny.provider.dao;

import com.csun.cmny.provider.model.dto.BedOldmanQueryDto;
import com.csun.cmny.provider.model.vo.BedInfoVo;
import com.csun.cmny.provider.model.vo.BedOldmanDeviceDataVo;
import com.csun.cmny.provider.model.vo.BedOldmanInfoVo;
import com.csun.cmny.provider.model.vo.BedStatusVo;
import com.csun.cmny.provider.pojo.Bed;
import com.csun.cmny.provider.vo.BedNosVo;
import com.csun.cmny.provider.vo.BedVo;
import com.csun.cmny.provider.vo.OldmanBedInfoVo;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;
import java.util.Map;

public interface BedMapper  {
    int deleteByPrimaryKey(Integer bedId);

    int insert(Bed record);

    int insertSelective(Bed record);

    BedVo selectByPrimaryKey(Integer bedId);

    int updateByPrimaryKeySelective(Bed record);

    int updateByPrimaryKey(Bed record);
    /**
     * 根据Bed查询Bed信息
     * author:liqian
     * date:2018-11-12 11:27
     */
    Bed selectByBed(Bed bed);
    /**
     * 根据房间id和床位编号查询床位
     * author:liqian
     * date:2018-11-12 11:57
     */
    Bed selectByRidAndBedNo(Bed bed);
    /**
     * 批量插入床位
     * author:liqian
     * date:2018-11-12 13:39
     */
    int insertBatch(List<Bed> bedList);
    /**
     * 将老人id置空
     * author:liqian
     * date:2018-11-16 15:04
     */
    int updateByOid(Integer oldmanId);
    /**
     * 根据老人id查询老人床位信息
     * author:liqian
     * date:2018-11-16 17:13
     */
    OldmanBedInfoVo selectByOid(Integer oldmanId);

    /**
     * query bed oldman device with list
     *
     * @param bedOldmanQueryDto bed oldman query dto
     *
     * @return
     */
    BedOldmanDeviceDataVo queryBedOldmanDeviceWithList(BedOldmanQueryDto bedOldmanQueryDto);

    //根据房间Id查询床位信息
    List<Bed> selectByRoomId(@Param("roomId") Integer roomId);

    //院内床位、空余床位、已预订床位、院内房间——首页
    List<Integer> bedNumberList(@Param("groupId") Long groupId);

    /**
     * 批量更新床位编号--床位重排
     * @param bedNoList
     * @return
     */
    int bedUpdateList(List<Bed> bedNoList);

    /**
     * 根据楼栋、楼层查询房间内床位信息
     * @param: [buildingId, floorNo]
     * @return: java.util.List<com.csun.cmny.provider.model.vo.BedInfoVo>
     */
    List<BedInfoVo> queryBedInfo(@Param("buildingId") Integer buildingId, @Param("floorNo") Integer floorNo,
                                 @Param("roomId") Integer roomId,@Param("groupId") Long groupId);

    /**
     * 统计入住床位数量
     * @param: [groupId]
     * @return: java.util.List<com.csun.cmny.provider.model.vo.BedStatusVo>
     */
    List<BedStatusVo> countBedStatus(@Param("buildingId") Integer buildingId, @Param("groupId") Long groupId);

    /**
     * 统计预约床位数量
     * @param: [groupId]
     * @return: java.util.List<com.csun.cmny.provider.model.vo.BedStatusVo>
     */
    List<BedStatusVo> countReservationStatus(@Param("buildingId") Integer buildingId);

    /**
     * 清除床位上的老人，并且修改床位状态
     *
     * @param bedId
     *
     * @return
     */
    Integer cleanOldmanById(Integer bedId);

    /**
     * query bed oldman device with list
     *
     * @param bedOldmanQueryDto bed oldman query dto
     *
     * @return
     */
    List<BedOldmanInfoVo> queryBedOldmanDeviceByGroupId(BedOldmanQueryDto bedOldmanQueryDto);

    /**
     * update bed statuc by id
     *
     * @param bed
     *
     * @return
     */
    Integer updateStatusById(Bed bed);

    List<BedNosVo> selectAllNo(Integer afterBed);
    /*
     * 集团化床位查询
     * */
    List<BedInfoVo> selectBedInfor(@Param("buildingId") Integer buildingId, @Param("floorNo") Integer floorNo,
                                   @Param("roomId") Integer roomId,@Param("groupId") Long groupId);
}